package q718_findLength;

public class Solution_2 {
    /**
     * 相较于二维数组的做法 我们可以类比于背包问题将其降级为一维
     *
     */
    public int findLength(int[] nums1, int[] nums2) {
        int[] dp = new int[nums2.length + 1];

        int res = 0;
        for (int i = 1; i <= nums1.length; i++) {
            for (int j = nums2.length; j > 0; j--) {
                if (nums1[i - 1] == nums2[j - 1]) {
                    dp[j] = dp[j - 1] + 1;
                }else {
                    dp[j] = 0;// 不相等的时候要重新赋值为0
                }
                // dp[j] = nums1[i] == nums2[j] ? dp[j - 1] + 1 : 0;
                res = Math.max(res, dp[j]);
            }
        }

        return res;
    }
}
